Skip to main content

HTTP Status Codes

StatusMeaning
200Successful read
202Execution accepted and queued asynchronously
400Invalid request body or inputs
401Missing or invalid API key
403Access denied for this workspace or app
404App or execution not found
429Rate limit exceeded
500Unexpected server-side failure

Interpreting 202 Accepted

POST /v1/apps/{appId}/executions returns 202 when Lamina has accepted the job. That does not mean outputs are ready yet. After a 202 response:
  • store the returned executionId
  • poll GET /v1/executions/{executionId}
  • or wait for your webhook callback

Common Error Cases

Invalid API key

{
  "error": "Invalid API key"
}
Action:
  • verify the key value
  • make sure the key has not been revoked
  • confirm you are using the correct environment

Missing API key

{
  "error": "Missing API key"
}
Action:
  • send x-api-key
  • or send Authorization: Bearer ...

Invalid inputs

{
  "error": "Invalid inputs",
  "details": [
    "\"Location\": invalid option \"Mars\". Must be one of: Studio, Urban, Park"
  ]
}
Action:
  • fetch app metadata again
  • validate input names and option labels before retrying

App not found

{
  "error": "App not found"
}
Action:
  • verify the appId
  • confirm the app is accessible to the workspace associated with your key

Execution not found

{
  "error": "Execution not found"
}
Action:
  • verify the executionId
  • confirm you are checking from the same workspace context that started the execution

Rate limit exceeded

Too many requests from this IP, please try again in a minute
Action:
  • read RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset
  • wait for Retry-After before retrying
  • avoid tight polling loops; prefer webhooks for long-running executions

Current Rate Limit

All /v1/* endpoints are currently limited to 100 requests per minute per IP.

Retry Guidance

Safe to retry:
  • transient 500 responses
  • network timeouts while fetching status
  • 429 after waiting for the reset window
  • idempotent reads such as GET /v1/apps, GET /v1/apps/{appId}, and GET /v1/executions/{executionId}
Usually do not retry unchanged:
  • 400 invalid inputs
  • 401 invalid API key
  • 403 access denied
  • 404 wrong app or execution ID

Support Checklist

If you need to debug an issue quickly, capture:
  • request path
  • app ID
  • execution ID
  • timestamp
  • top-level error message
  • output-level errors