Importing
defineAction
Define a server-side action that can be called from the client or server.Action configuration object.
Zod schema to validate input data. If
accept is 'form', defaults to FormData schema.Type of input the action accepts. Use
'form' for form submissions or 'json' for JSON payloads.Default: 'json'The server function that executes the action.Parameters:
Parsed and validated input data matching your schema.
Example
Calling Actions
From Client-Side JavaScript
From Forms
From Astro Components
UseAstro.callAction() to call actions server-side:
Getting Form Results
UseAstro.getActionResult() to get results from form submissions:
Error Handling
Actions return aSafeResult object with either data or error:
Throwing Errors
Throw errors in your handler to return error responses:Error Codes
HTTP-like error codes:
'BAD_REQUEST'- Invalid input (400)'UNAUTHORIZED'- Authentication required (401)'FORBIDDEN'- Insufficient permissions (403)'NOT_FOUND'- Resource not found (404)'TIMEOUT'- Request timeout (408)'CONFLICT'- Resource conflict (409)'PRECONDITION_FAILED'- Precondition not met (412)'PAYLOAD_TOO_LARGE'- Request too large (413)'UNSUPPORTED_MEDIA_TYPE'- Invalid content type (415)'UNPROCESSABLE_CONTENT'- Validation failed (422)'TOO_MANY_REQUESTS'- Rate limit exceeded (429)'CLIENT_CLOSED_REQUEST'- Client cancelled (499)'INTERNAL_SERVER_ERROR'- Server error (500)'NOT_IMPLEMENTED'- Not implemented (501)'BAD_GATEWAY'- Bad gateway (502)'SERVICE_UNAVAILABLE'- Service unavailable (503)'GATEWAY_TIMEOUT'- Gateway timeout (504)
Input Validation
Input is automatically validated using the provided Zod schema:orThrow
Call.orThrow() to throw on errors instead of returning a result object: