{"openapi":"3.1.0","info":{"title":"Index My Site API","version":"1.0.0","description":"Submit URLs, follow their progress, and check your credits."},"servers":[{"url":"https://indexmysite.app"}],"security":[{"bearerAuth":[]}],"paths":{"/api/indexing/projects":{"get":{"operationId":"listProjects","summary":"List your projects and results","parameters":[{"name":"after","in":"query","schema":{"type":"string"},"description":"Use nextCursor from the previous page. Up to 200 projects per page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSummary"}},"nextCursor":{"type":["string","null"]}}}}}},"401":{"description":"Sign in or provide a valid API key."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}},"post":{"operationId":"createProject","summary":"Create a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120}}}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["project"],"properties":{"project":{"$ref":"#/components/schemas/ProjectSummary"}}}}}},"400":{"description":"Invalid project name."},"401":{"description":"Sign in or provide a valid API key."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}}},"/api/indexing/projects/{id}":{"get":{"operationId":"getProject","summary":"Read a project and its latest 100 jobs","description":"Project totals cover all its URLs. Index rate uses whole completed batches and excludes processing failures.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectSummary"},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobSummary"}}}}}}},"401":{"description":"Sign in or provide a valid API key."},"404":{"description":"Project not found in your account."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}},"patch":{"operationId":"renameProject","summary":"Rename a project","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["project"],"properties":{"project":{"$ref":"#/components/schemas/ProjectSummary"}}}}}},"400":{"description":"Invalid project name."},"401":{"description":"Sign in or provide a valid API key."},"404":{"description":"Project not found in your account."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}}},"/api/indexing/jobs":{"get":{"operationId":"listJobs","summary":"List your latest 100 jobs","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["jobs"],"properties":{"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobSummary"}}}}}}},"401":{"description":"Sign in or provide a valid API key."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}},"post":{"operationId":"submitUrls","summary":"Submit up to 2,000 URLs","description":"URLs wait for credits when your balance is too low. Retry with the same key and request body to return the same job.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["urls"],"properties":{"urls":{"type":"array","minItems":1,"maxItems":2000,"items":{"type":"string","format":"uri","maxLength":2048}},"projectId":{"type":["string","null"],"description":"Optional project in your account."},"name":{"type":"string","description":"Optional label, shortened to 120 characters."}}}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["job"],"properties":{"job":{"$ref":"#/components/schemas/Job"}}}}}},"400":{"description":"Invalid URLs or request key, or the key was used for a different request."},"401":{"description":"Sign in or provide a valid API key."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}}},"/api/indexing/jobs/{id}":{"get":{"operationId":"getJob","summary":"Get one of your jobs and its URLs","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["job"],"properties":{"job":{"$ref":"#/components/schemas/Job"}}}}}},"401":{"description":"Sign in or provide a valid API key."},"404":{"description":"Job not found in your account."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}}},"/api/credits":{"get":{"operationId":"getCredits","summary":"Check your credit balance","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credits"}}}},"401":{"description":"Sign in or provide a valid API key."},"429":{"description":"Too many requests. Retry later."},"503":{"description":"Service temporarily unavailable. Retry later."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Create a personal key in Settings → Connections."}},"schemas":{"ProjectSummary":{"type":"object","required":["id","name","createdAt","total","counts","stats"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"integer","description":"Unix time in milliseconds."},"total":{"type":"integer"},"counts":{"type":"object","additionalProperties":{"type":"integer"}},"stats":{"type":"object","description":"Counts include all project URLs. completed and completedIndexed only include whole finished batches, excluding processing failures. pending includes not_indexed URLs awaiting a final result.","properties":{"indexed":{"type":"integer"},"notIndexed":{"type":"integer"},"pending":{"type":"integer"},"refunded":{"type":"integer"},"failed":{"type":"integer"},"completed":{"type":"integer"},"completedIndexed":{"type":"integer"},"indexRate":{"type":["number","null"],"minimum":0,"maximum":100,"description":"completedIndexed / completed × 100; null when no eligible results exist."}}}}},"JobSummary":{"type":"object","required":["id","name","projectId","createdAt","total","counts"],"properties":{"projectId":{"type":["string","null"]},"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"integer","description":"Unix time in milliseconds."},"total":{"type":"integer","minimum":0},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0}}}},"Job":{"allOf":[{"$ref":"#/components/schemas/JobSummary"},{"type":"object","required":["urls"],"properties":{"urls":{"type":"array","items":{"$ref":"#/components/schemas/JobUrl"}},"earlySearch":{"type":"object","description":"Early search observations, separate from the later indexing report and final project rate.","properties":{"found":{"type":"integer","minimum":0}}}}}]},"JobUrl":{"type":"object","required":["id","url","status"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["queued","awaiting_credits","funded","submitting","submitted","checking","not_indexed","indexed","refunded","failed"]},"submittedAt":{"type":["integer","null"],"description":"Unix time in milliseconds."},"checkedAt":{"type":["integer","null"],"description":"Unix time in milliseconds."},"searchVisibility":{"type":["object","null"],"description":"An early Google search observation. This does not replace the later indexing report.","properties":{"foundAt":{"type":"integer","description":"Unix time in milliseconds."}}},"error":{"type":["string","null"]}}},"Credits":{"type":"object","required":["balance","hasPurchased","hasPaymentMethod","autoReloadEnabled","autoReloadAmountCents"],"properties":{"balance":{"type":"integer","minimum":0},"hasPurchased":{"type":"boolean"},"hasPaymentMethod":{"type":"boolean"},"autoReloadEnabled":{"type":"boolean"},"autoReloadAmountCents":{"type":"integer"},"autoReloadStatus":{"type":["string","null"]}}}}}}