Laravel icon

Laravel

LaravelLaravel

Render a unique image per page, post, or user from one Imejis template. The route below uses Laravel's HTTP client to call Imejis server-side and streams the image back, so your API key never reaches the browser.

Add two values to your .env.

.env
IMEJIS_API_KEY=your_api_key
IMEJIS_DESIGN_ID=your_design_id

1 a route that renders the image1. A route that renders the image

routes/web.php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
 
Route::get('/og', function (Request $request) {
    $response = Http::withHeaders([
        'dma-api-key' => env('IMEJIS_API_KEY'),
    ])->post('https://render.imejis.io/v1/' . env('IMEJIS_DESIGN_ID'), [
        'headline.text' => $request->query('title', 'Untitled'),
    ]);
 
    return response($response->body(), 200)
        ->header('Content-Type', 'image/jpeg')
        ->header('Cache-Control', 'public, immutable, no-transform, max-age=31536000');
});

2 reference it in your blade layout2. Reference it in your Blade layout

resources/views/layouts/app.blade.php
<meta
  property="og:image"
  content="{{ url('/og?title=' . urlencode($post->title)) }}"
/>
<meta name="twitter:card" content="summary_large_image" />

Override any field. Each dynamic component exposes keys like headline.text, title.color, or image.image. Send only the ones you want to change, and add more query params to the route as needed. A design's overridable fields are listed in its Share / API panel.