CV-Transformer API reference
With the CV-Transformer API you can access and manage your data in a programmatic way, using HTTP requests. The structure of the CV Transformer API is based on PostgREST v13 .
Authentication
The CV-Transformer API uses api keys for authentication. You can create and manage API keys from the bottom of settings page of your organization in the admin dashboard .
Once you have an API key simply provide it in the HTTP Authorization header as bearer token.
curl -X GET "https://api.cv-transformer.com/v1/layouts" \
-H "Authorization: Bearer YOUR_API_KEY"Selecting data
For each endpoint, you can select which columns you want to retrieve by using the select query parameter. Besides the columns of the resource itself, you can also select columns from related resources. For more advanced selection options refer to the PostgREST documentation .
curl -X GET "https://api.cv-transformer.com/v1/layouts?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.cv-transformer.com/v1/layouts?select=id,name" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.cv-transformer.com/v1/layouts?select=name,candidates(*)" \
-H "Authorization: Bearer YOUR_API_KEY"Filtering
Filters can be applied on each list, update and delete request, to restrict the rows affected by the request. For a complete list of filters refer to the PostgREST documentation .
curl -X GET "https://api.cv-transformer.com/v1/candidates?status=eq.active" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.cv-transformer.com/v1/candidates?data->>email=eq.some@example.com&status=eq.active" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X DELETE "https://api.cv-transformer.com/v1/candidates?data->>email=like.%test.com" \
-H "Authorization: Bearer YOUR_API_KEY"Sorting & pagination
By default, results are sorted by the primary key of the underlying table. You can change the sorting by using the order query parameter. To limit the number of results, use the limit and offset query parameters. The API will return at most 1000 results per request. For more advanced sorting and pagination options refer to the PostgREST documentation .
curl -X GET "https://api.cv-transformer.com/v1/layouts?order=created_at.desc" \
-H "Authorization: Bearer YOUR_API_KEY"curl -X GET "https://api.cv-transformer.com/v1/layouts?limit=10&offset=10" \
-H "Authorization: Bearer YOUR_API_KEY"Api key usage
The api key usage object
Attributes
idintegerUnique identifier
created_attimestamp with time zoneCreation timestamp
created_ondateDate on which the API key was used
endpointtextAPI endpoint that was called
methodtextRequest method
searchtextSearch params passed to the API request
JSON
{
"id": 0,
"api_key_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.428Z",
"created_on": null,
"endpoint": "",
"method": "",
"search": ""
}List api key usage
Filters
idFilter<integer>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
created_onFilter<date>Date on which the API key was used
endpointFilter<text>API endpoint that was called
methodFilter<text>Request method
searchFilter<text>Search params passed to the API request
Responses
200A list of api key usage with the selected columns
206Partial Content
GET /api_key_usagecurl -X GET "https://api.cv-transformer.com/v1/api_key_usage?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Billing accounts
The billing account object
Attributes
iduuidUnique identifier
paddle_subscription_idtext | nullIdentifier of the subscription in Paddle
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
creditintegerAmount of credits currently available
currencyCurrencyCodeCurrency in which the organization is billed
minimum_guaranteeintegerMinimum billed usage per month
next_billed_attimestamp with time zone | nullNext billing timestamp
prev_usageintegerNumber of credits used in previous 7 days
price_per_creditintegerAgreed price per credit
pricing_versionPricingVersionThe organization's pricing version
recent_usageintegerNumber of credits used in the last 7 days
subscription_typeSubscriptionTypeActive subscription type
trial_expires_attimestamp with time zone | nullTrial expiration timestamp
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"paddle_subscription_id": "",
"created_at": "2026-02-28T02:12:33.431Z",
"updated_at": "2026-02-28T02:12:33.431Z",
"credit": 0,
"currency": "USD",
"minimum_guarantee": 0,
"next_billed_at": "2026-02-28T02:12:33.431Z",
"prev_usage": 0,
"price_per_credit": 150,
"pricing_version": "v3",
"recent_usage": 0,
"subscription_type": "subscription",
"trial_expires_at": "2026-02-28T02:12:33.431Z"
}List billing accounts
Filters
idFilter<uuid>Unique identifier
paddle_subscription_idFilter<text | null>Identifier of the subscription in Paddle
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
creditFilter<integer>Amount of credits currently available
currencyFilter<CurrencyCode>Currency in which the organization is billed
minimum_guaranteeFilter<integer>Minimum billed usage per month
next_billed_atFilter<timestamp with time zone | null>Next billing timestamp
prev_usageFilter<integer>Number of credits used in previous 7 days
price_per_creditFilter<integer>Agreed price per credit
pricing_versionFilter<PricingVersion>The organization's pricing version
recent_usageFilter<integer>Number of credits used in the last 7 days
subscription_typeFilter<SubscriptionType>Active subscription type
trial_expires_atFilter<timestamp with time zone | null>Trial expiration timestamp
Responses
200A list of billing accounts with the selected columns
206Partial Content
GET /billing_accountscurl -X GET "https://api.cv-transformer.com/v1/billing_accounts?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Update billing accounts
Filters
idFilter<uuid>Unique identifier
paddle_subscription_idFilter<text | null>Identifier of the subscription in Paddle
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
creditFilter<integer>Amount of credits currently available
currencyFilter<CurrencyCode>Currency in which the organization is billed
minimum_guaranteeFilter<integer>Minimum billed usage per month
next_billed_atFilter<timestamp with time zone | null>Next billing timestamp
prev_usageFilter<integer>Number of credits used in previous 7 days
price_per_creditFilter<integer>Agreed price per credit
pricing_versionFilter<PricingVersion>The organization's pricing version
recent_usageFilter<integer>Number of credits used in the last 7 days
subscription_typeFilter<SubscriptionType>Active subscription type
trial_expires_atFilter<timestamp with time zone | null>Trial expiration timestamp
Body
Partial<BillingAccount>Responses
204The updated billing accounts with the selected columns
PATCH /billing_accountscurl -X PATCH "https://api.cv-transformer.com/v1/billing_accounts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Candidate analytics
The candidate analytic object
Attributes
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast update timestamp
time_spentrealTime spent in seconds
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"candidate_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.432Z",
"updated_at": "2026-02-28T02:12:33.432Z",
"time_spent": 0
}List candidate analytics
Filters
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last update timestamp
time_spentFilter<real>Time spent in seconds
Responses
200A list of candidate analytics with the selected columns
206Partial Content
GET /candidate_analyticscurl -X GET "https://api.cv-transformer.com/v1/candidate_analytics?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Candidate views
Logs for each time a candidate is viewed
The candidate view object
Attributes
idbigintUnique identifier
created_attimestamp with time zoneCreation timestamp
anonymousbooleanWhether the candidate was viewed with personal information redacted or not
JSON
{
"id": 0,
"candidate_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.433Z",
"anonymous": false
}List candidate views
Filters
idFilter<bigint>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
anonymousFilter<boolean>Whether the candidate was viewed with personal information redacted or not
Responses
200A list of candidate views with the selected columns
206Partial Content
GET /candidate_viewscurl -X GET "https://api.cv-transformer.com/v1/candidate_views?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Candidates
All information related to individual candidates
The candidate object
Attributes
iduuidUnique identifier
current_event_iduuid | nullmember_iduuid | nullIdentifier of the member associated with this candidate (initially the creator)
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
deleted_attimestamp with time zone | nullDeletion timestamp
attachmentsRecord<string, CandidateAttachment>Files attached to this candidate (CV, Vacancy, other)
avatartext | nullThe candidate's avatar image. Used for efficient display. Automatically filled when editing candidate from UI
export_filenametextFilename for exported PDF file (without .pdf). If left empty, layout.export_filename applies.
external_dataCandidateExternalData | nullData imported from an external source
ftstsvectorlanguageLanguageLanguage this candidate should be displayed in
messagesArray<CandidateMessage>List of messages exchanged with AI
nametextThe candidate's name. Used for searching. Automatically filled when editing candidate from UI
secrettextSecret string. Used to privately share a proposal for this candidate with personal information non-redacted
secret_anonymoustextSecret string. Used to privately share a proposal for this candidate with personal information redacted
secret_editabletextSecret string. Used to share the candidate for editing.
section_attachmentsRecord<string, Array<string>>Links of attachments per attachment section
statusCandidateStatusStatus of the candidate. Only active candidates can be shared
valuesJsonObjectValues for the each of the variables defined in the layout the candidate uses
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"current_event_id": "00000000-0000-0000-0000-000000000000",
"layout_id": "00000000-0000-0000-0000-000000000000",
"member_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.434Z",
"updated_at": "2026-02-28T02:12:33.434Z",
"deleted_at": "2026-02-28T02:12:33.434Z",
"attachments": {
"CV": {
"detected_source_language": null,
"external_id": null,
"label": "CV",
"text": {
"default": "Text from the attachment"
},
"type": "pdf",
"url": "https://example.com/document.pdf"
}
},
"avatar": "",
"export_filename": "",
"external_data": {
"avatar": "https://example.com/candidates/123/avatar.jpg",
"name": "John Doe",
"id": "123",
"url": "https://integration.com/candidates/123",
"values": {
"first_name": "John",
"last_name": "Doe"
}
},
"language": "en",
"messages": [
{
"comment": "Filled in values",
"created_at": "2026-02-28T02:12:28.925Z",
"id": "00000000-0000-0000-0000-000000000000",
"member_id": "00000000-0000-0000-0000-000000000000",
"prompt": "Fill in values",
"selector": []
}
],
"name": "",
"secret": "regexp_replace(encode(extensions.gen_random_bytes(8), 'base64'::text), '[^a-zA-Z0-9]'::text, ''::text, 'g'::text)",
"secret_anonymous": "regexp_replace(encode(extensions.gen_random_bytes(8), 'base64'::text), '[^a-zA-Z0-9]'::text, ''::text, 'g'::text)",
"secret_editable": "regexp_replace(encode(extensions.gen_random_bytes(8), 'base64'::text), '[^a-zA-Z0-9]'::text, ''::text, 'g'::text)",
"section_attachments": {},
"status": "active",
"values": {
"name": "John Doe",
"date_of_birth": "1995-01-01",
"experiences": [
{
"interval": {
"start": "2015-01-01",
"end": "2018-01-01"
},
"company": "Example Inc.",
"position": "Developer"
}
]
}
}List candidates
Filters
idFilter<uuid>Unique identifier
current_event_idFilter<uuid | null>member_idFilter<uuid | null>Identifier of the member associated with this candidate (initially the creator)
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Deletion timestamp
attachmentsFilter<Record<string, CandidateAttachment>>Files attached to this candidate (CV, Vacancy, other)
avatarFilter<text | null>The candidate's avatar image. Used for efficient display. Automatically filled when editing candidate from UI
export_filenameFilter<text>Filename for exported PDF file (without .pdf). If left empty, layout.export_filename applies.
external_dataFilter<CandidateExternalData | null>Data imported from an external source
ftsFilter<tsvector>languageFilter<Language>Language this candidate should be displayed in
messagesFilter<Array<CandidateMessage>>List of messages exchanged with AI
nameFilter<text>The candidate's name. Used for searching. Automatically filled when editing candidate from UI
secretFilter<text>Secret string. Used to privately share a proposal for this candidate with personal information non-redacted
secret_anonymousFilter<text>Secret string. Used to privately share a proposal for this candidate with personal information redacted
secret_editableFilter<text>Secret string. Used to share the candidate for editing.
section_attachmentsFilter<Record<string, Array<string>>>Links of attachments per attachment section
statusFilter<CandidateStatus>Status of the candidate. Only active candidates can be shared
valuesFilter<JsonObject>Values for the each of the variables defined in the layout the candidate uses
Responses
200A list of candidates with the selected columns
206Partial Content
GET /candidatescurl -X GET "https://api.cv-transformer.com/v1/candidates?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Delete candidates
Filters
idFilter<uuid>Unique identifier
current_event_idFilter<uuid | null>member_idFilter<uuid | null>Identifier of the member associated with this candidate (initially the creator)
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Deletion timestamp
attachmentsFilter<Record<string, CandidateAttachment>>Files attached to this candidate (CV, Vacancy, other)
avatarFilter<text | null>The candidate's avatar image. Used for efficient display. Automatically filled when editing candidate from UI
export_filenameFilter<text>Filename for exported PDF file (without .pdf). If left empty, layout.export_filename applies.
external_dataFilter<CandidateExternalData | null>Data imported from an external source
ftsFilter<tsvector>languageFilter<Language>Language this candidate should be displayed in
messagesFilter<Array<CandidateMessage>>List of messages exchanged with AI
nameFilter<text>The candidate's name. Used for searching. Automatically filled when editing candidate from UI
secretFilter<text>Secret string. Used to privately share a proposal for this candidate with personal information non-redacted
secret_anonymousFilter<text>Secret string. Used to privately share a proposal for this candidate with personal information redacted
secret_editableFilter<text>Secret string. Used to share the candidate for editing.
section_attachmentsFilter<Record<string, Array<string>>>Links of attachments per attachment section
statusFilter<CandidateStatus>Status of the candidate. Only active candidates can be shared
valuesFilter<JsonObject>Values for the each of the variables defined in the layout the candidate uses
Responses
204The deleted candidates with the selected columns
DELETE /candidatescurl -X DELETE "https://api.cv-transformer.com/v1/candidates" \
-H "Authorization: Bearer YOUR_API_KEY"Update candidates
Filters
idFilter<uuid>Unique identifier
current_event_idFilter<uuid | null>member_idFilter<uuid | null>Identifier of the member associated with this candidate (initially the creator)
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Deletion timestamp
attachmentsFilter<Record<string, CandidateAttachment>>Files attached to this candidate (CV, Vacancy, other)
avatarFilter<text | null>The candidate's avatar image. Used for efficient display. Automatically filled when editing candidate from UI
export_filenameFilter<text>Filename for exported PDF file (without .pdf). If left empty, layout.export_filename applies.
external_dataFilter<CandidateExternalData | null>Data imported from an external source
ftsFilter<tsvector>languageFilter<Language>Language this candidate should be displayed in
messagesFilter<Array<CandidateMessage>>List of messages exchanged with AI
nameFilter<text>The candidate's name. Used for searching. Automatically filled when editing candidate from UI
secretFilter<text>Secret string. Used to privately share a proposal for this candidate with personal information non-redacted
secret_anonymousFilter<text>Secret string. Used to privately share a proposal for this candidate with personal information redacted
secret_editableFilter<text>Secret string. Used to share the candidate for editing.
section_attachmentsFilter<Record<string, Array<string>>>Links of attachments per attachment section
statusFilter<CandidateStatus>Status of the candidate. Only active candidates can be shared
valuesFilter<JsonObject>Values for the each of the variables defined in the layout the candidate uses
Body
Partial<Candidate>Responses
204The updated candidates with the selected columns
PATCH /candidatescurl -X PATCH "https://api.cv-transformer.com/v1/candidates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Create candidate
Create a new candidate. Uses one credit. When no credits are available in the organization, the candidate is created with status="pending" instead.
Body
Partial<Candidate> & { member_external_id?: string }Responses
200The created candidate
POST /candidatescurl -X POST "https://api.cv-transformer.com/v1/candidates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"attachments": {
"CV": {
"detected_source_language": null,
"external_id": null,
"label": "CV",
"text": "",
"type": "link",
"url": "https://example.com/cv"
}
},
"language": "nl",
"layout_id": "00000000-0000-0000-0000-000000000000",
"member_id": "00000000-0000-0000-0000-000000000000",
"values": {
"key": "value"
}
}'Upload candidate attachment
Upload an attachment for a candidate.
Query parameters
locationstringThe type of attachment to upload. Defaults to cv.
Body
The file to attach. Supported file-types: .pdf, .doc, .docx, .jpeg, .png, .txt, .webp
Responses
200The updated candidate
POST /candidates/[candidate_id]/attachcurl -X POST "https://api.cv-transformer.com/v1/candidates/[candidate_id]/attach?location=CV" \
-H "Authorization: Bearer YOUR_API_KEY"Fill / adjust candidate data
Fill or adjust a candidate's values.
Route parameters
candidate_idrequireduuidThe identifier of the candidate to fill.
Query parameters
promptstringCustom prompt, e.g. "Expand introduction", "Sort skills by level". Organization's default prompt is used when left empty.
Responses
200The updated candidate
POST /candidates/[candidate_id]/fillcurl -X POST "https://api.cv-transformer.com/v1/candidates/[candidate_id]/fill?style=" \
-H "Authorization: Bearer YOUR_API_KEY"Extract candidate data
Extract custom data from a candidate
Route parameters
candidate_idrequireduuidThe identifier of the candidate to extract data from.
Body
The JSONSchema of the data to extract.
Responses
200The extracted data
POST /candidates/[candidate_id]/extractcurl -X POST "https://api.cv-transformer.com/v1/candidates/[candidate_id]/extract" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}'Credit mutations
Changes in credit per organization
The credit mutation object
Attributes
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
deltaintegerDifference between next and previous credit
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"billing_account_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.435Z",
"delta": 0
}List credit mutations
Filters
idFilter<uuid>Unique identifier
organization_idFilter<uuid | null>Identifier of the organization related to this mutation
created_atFilter<timestamp with time zone>Creation timestamp
deltaFilter<integer>Difference between next and previous credit
Responses
200A list of credit mutations with the selected columns
206Partial Content
GET /credit_mutationscurl -X GET "https://api.cv-transformer.com/v1/credit_mutations?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Layouts
Layout definitions that can be filled in per candidate
The layout object
Attributes
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
archived_attimestamp with time zone | nullTimestamp at which the layout is archived
assetsArray<LayoutAsset>Reusable assets used in the layout
default_valuesPartial<Record<Language, JsonObject>>Default values for each of the variables in the layout. When left empty, these values are auto-generated
descriptiontextSEO description of the layout for in the library
export_filenametextFilename for exported PDF files (without .pdf). Can contain {{variables}}
featuredbooleanWhether the layout is featured in the layout library
ftstsvectorlanguagesArray<Language>Languages the layout is translated in. First entry indicates the default language
nametextTitle of this layout
page_heightintegerPage height (in pixels)
page_widthintegerPage width (in pixels)
secretuuidSecret string. Required to view the layout when its visibility is "private"
sectionsArray<LayoutSection>List of sections the layout consists of
share_instructionstextOptional instructions shown in the share modal
slugtextUnique identifier that allows easy lookup in the layout library
thumbnailtext | nullThumbnail image for this layout. Automatically generated
tokensArray<LayoutDesignToken>List of design tokens used in the layout
variablesArray<LayoutVariable>List of variables used in the layout. Each candidate using this layout populates these variables
visibilityLayoutVisibilityVisibility of this layout. "public" means the layout is published to the layout library.
web_settingsLayoutWebSettings | nullAdditional layout settings for web sharing
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"creator_id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"parent_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.435Z",
"updated_at": "2026-02-28T02:12:33.435Z",
"archived_at": "2026-02-28T02:12:33.435Z",
"assets": [
{
"family": "Roboto",
"type": "font",
"url": "https://example.com/roboto.ttf"
},
{
"label": "Example",
"type": "image",
"url": "https://example.com/example.png"
}
],
"default_values": {
"en": {
"message": "Hello"
},
"nl": {
"message": "Hallo"
}
},
"description": "",
"export_filename": "",
"featured": false,
"languages": [
"en",
"cs",
"da-DK",
"de",
"en-GB",
"es",
"fr",
"nb-NO",
"nl",
"yue",
"zh"
],
"name": "",
"page_height": 1123,
"page_width": 794,
"secret": "00000000-0000-0000-0000-000000000000",
"sections": [
{
"body": {
"align": "left",
"background": "#FFFFFF",
"bold": false,
"border": null,
"borderRadius": "0",
"color": "#000000",
"columns": 1,
"font": {
"family": "Roboto",
"letter_spacing": 0,
"line_height": 1.5,
"paragraph_spacing": 0.5,
"size": 16
},
"grow": true,
"id": "text",
"italic": false,
"margin": "0",
"padding": 16,
"listStyle": "disc",
"split": false,
"strikethrough": false,
"textTransform": "none",
"transform": "",
"underline": false,
"value": {
"default": "Hello",
"nl": "Hallo"
},
"visibility": true,
"type": "text"
},
"footer": null,
"header": null,
"id": "section",
"label": "Section",
"type": "multi-page"
}
],
"share_instructions": "",
"slug": "",
"thumbnail": "",
"tokens": [
{
"id": "primary-color",
"name": "Primary color",
"type": "color",
"value": "#000000"
},
{
"id": "font-size",
"name": "Font size",
"type": "length",
"value": 16
}
],
"variables": [
{
"ai_instructions": "",
"sensitive": false,
"default": "",
"key": "name",
"max_length": null,
"min_length": 0,
"type": "inline-text"
},
{
"ai_instructions": "",
"sensitive": false,
"default": "",
"key": "description",
"max_length": null,
"min_length": 0,
"type": "text-block"
}
],
"visibility": "public",
"web_settings": {
"color_accent": "#000000",
"color_background": "#FFFFFF",
"color_text": "#000000"
}
}List layouts
Filters
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
archived_atFilter<timestamp with time zone | null>Timestamp at which the layout is archived
assetsFilter<Array<LayoutAsset>>Reusable assets used in the layout
default_valuesFilter<Partial<Record<Language, JsonObject>>>Default values for each of the variables in the layout. When left empty, these values are auto-generated
descriptionFilter<text>SEO description of the layout for in the library
export_filenameFilter<text>Filename for exported PDF files (without .pdf). Can contain {{variables}}
featuredFilter<boolean>Whether the layout is featured in the layout library
ftsFilter<tsvector>languagesFilter<Array<Language>>Languages the layout is translated in. First entry indicates the default language
nameFilter<text>Title of this layout
page_heightFilter<integer>Page height (in pixels)
page_widthFilter<integer>Page width (in pixels)
secretFilter<uuid>Secret string. Required to view the layout when its visibility is "private"
sectionsFilter<Array<LayoutSection>>List of sections the layout consists of
share_instructionsFilter<text>Optional instructions shown in the share modal
slugFilter<text>Unique identifier that allows easy lookup in the layout library
thumbnailFilter<text | null>Thumbnail image for this layout. Automatically generated
tokensFilter<Array<LayoutDesignToken>>List of design tokens used in the layout
variablesFilter<Array<LayoutVariable>>List of variables used in the layout. Each candidate using this layout populates these variables
visibilityFilter<LayoutVisibility>Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsFilter<LayoutWebSettings | null>Additional layout settings for web sharing
Responses
200A list of layouts with the selected columns
206Partial Content
GET /layoutscurl -X GET "https://api.cv-transformer.com/v1/layouts?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Create layouts
Body
Partial<Layout> | Array<Partial<Layout>>Responses
201The newly created layouts with the selected columns
POST /layoutscurl -X POST "https://api.cv-transformer.com/v1/layouts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'Delete layouts
Filters
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
archived_atFilter<timestamp with time zone | null>Timestamp at which the layout is archived
assetsFilter<Array<LayoutAsset>>Reusable assets used in the layout
default_valuesFilter<Partial<Record<Language, JsonObject>>>Default values for each of the variables in the layout. When left empty, these values are auto-generated
descriptionFilter<text>SEO description of the layout for in the library
export_filenameFilter<text>Filename for exported PDF files (without .pdf). Can contain {{variables}}
featuredFilter<boolean>Whether the layout is featured in the layout library
ftsFilter<tsvector>languagesFilter<Array<Language>>Languages the layout is translated in. First entry indicates the default language
nameFilter<text>Title of this layout
page_heightFilter<integer>Page height (in pixels)
page_widthFilter<integer>Page width (in pixels)
secretFilter<uuid>Secret string. Required to view the layout when its visibility is "private"
sectionsFilter<Array<LayoutSection>>List of sections the layout consists of
share_instructionsFilter<text>Optional instructions shown in the share modal
slugFilter<text>Unique identifier that allows easy lookup in the layout library
thumbnailFilter<text | null>Thumbnail image for this layout. Automatically generated
tokensFilter<Array<LayoutDesignToken>>List of design tokens used in the layout
variablesFilter<Array<LayoutVariable>>List of variables used in the layout. Each candidate using this layout populates these variables
visibilityFilter<LayoutVisibility>Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsFilter<LayoutWebSettings | null>Additional layout settings for web sharing
Responses
204The deleted layouts with the selected columns
DELETE /layoutscurl -X DELETE "https://api.cv-transformer.com/v1/layouts" \
-H "Authorization: Bearer YOUR_API_KEY"Update layouts
Filters
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
archived_atFilter<timestamp with time zone | null>Timestamp at which the layout is archived
assetsFilter<Array<LayoutAsset>>Reusable assets used in the layout
default_valuesFilter<Partial<Record<Language, JsonObject>>>Default values for each of the variables in the layout. When left empty, these values are auto-generated
descriptionFilter<text>SEO description of the layout for in the library
export_filenameFilter<text>Filename for exported PDF files (without .pdf). Can contain {{variables}}
featuredFilter<boolean>Whether the layout is featured in the layout library
ftsFilter<tsvector>languagesFilter<Array<Language>>Languages the layout is translated in. First entry indicates the default language
nameFilter<text>Title of this layout
page_heightFilter<integer>Page height (in pixels)
page_widthFilter<integer>Page width (in pixels)
secretFilter<uuid>Secret string. Required to view the layout when its visibility is "private"
sectionsFilter<Array<LayoutSection>>List of sections the layout consists of
share_instructionsFilter<text>Optional instructions shown in the share modal
slugFilter<text>Unique identifier that allows easy lookup in the layout library
thumbnailFilter<text | null>Thumbnail image for this layout. Automatically generated
tokensFilter<Array<LayoutDesignToken>>List of design tokens used in the layout
variablesFilter<Array<LayoutVariable>>List of variables used in the layout. Each candidate using this layout populates these variables
visibilityFilter<LayoutVisibility>Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsFilter<LayoutWebSettings | null>Additional layout settings for web sharing
Body
Partial<Layout>Responses
204The updated layouts with the selected columns
PATCH /layoutscurl -X PATCH "https://api.cv-transformer.com/v1/layouts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Members
Links users to organizations via roles
The member object
Attributes
iduuidUnique identifier
external_idstring | number | nullThe ID of this member in an external system. Used for matching imported candidates.
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
permissionsArray<Permission>The permissions this member has
valuesRecord<string, MemberValue>Values for each of the organization's member_variables, usable in layouts
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"external_id": "example-id",
"organization_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.436Z",
"updated_at": "2026-02-28T02:12:33.436Z",
"permissions": [
"billing",
"edit_candidates",
"edit_layouts",
"settings",
"team",
"view_candidates"
],
"values": {
"first_name": "John",
"last_name": "Doe"
}
}List members
Filters
idFilter<uuid>Unique identifier
external_idFilter<string | number | null>The ID of this member in an external system. Used for matching imported candidates.
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
permissionsFilter<Array<Permission>>The permissions this member has
valuesFilter<Record<string, MemberValue>>Values for each of the organization's member_variables, usable in layouts
Responses
200A list of members with the selected columns
206Partial Content
GET /memberscurl -X GET "https://api.cv-transformer.com/v1/members?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Update members
Filters
idFilter<uuid>Unique identifier
external_idFilter<string | number | null>The ID of this member in an external system. Used for matching imported candidates.
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
permissionsFilter<Array<Permission>>The permissions this member has
valuesFilter<Record<string, MemberValue>>Values for each of the organization's member_variables, usable in layouts
Body
Partial<Member>Responses
204The updated members with the selected columns
PATCH /memberscurl -X PATCH "https://api.cv-transformer.com/v1/members" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'Invite member
Invite a member to your organization. The member will receive an email with a link to accept the invitation. The member will have the user role. To make a member admin or superuser use the dashboard.
Body
emailrequiredstringThe email address of the member to invite.
namestringThe name of the member to invite.
languageLanguageThe language of the member to invite.
Responses
201The invited member with it's user profile
POST /memberscurl -X POST "https://api.cv-transformer.com/v1/members" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"email": "johndoe@example.com",
"name": "John Doe"
}'JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"external_id": {},
"organization_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.500Z",
"updated_at": "2026-02-28T02:12:33.500Z",
"permissions": [
""
],
"values": {},
"user_profile": {
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.500Z",
"updated_at": "2026-02-28T02:12:33.500Z",
"avatar": "",
"email": "",
"invited_at": "2026-02-28T02:12:33.500Z",
"language": "nl",
"last_login_at": "2026-02-28T02:12:33.500Z",
"name": "",
"phone": "",
"source": ""
}
}Revoke member
Revoke a member from your organization. The member will no longer have access to your organization. Only works for members with the user role. To revoke an admin or superuser members use the dashboard.
Parameters
idrequireduuidThe identifier of the member to revoke.
Responses
200The deleted member
DELETE /memberscurl -X DELETE "https://api.cv-transformer.com/v1/members?id=00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY"Organizations
All base information per organizations
The organization object
Attributes
iduuidUnique identifier
billing_account_iduuidIdentifier of the billing account this organization belongs to
default_layout_iduuid | nullIdentifier of the layout that is used for new candidates by default
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
deleted_attimestamp with time zone | nullDeletion timestamp
active_ats_integrationIntegrationName | nullCurrently active ATS integration
allow_inspectionbooleanWhether the CV-Transformer team is allowed to inspect the organization to debug errors
allow_word_outputbooleanWhether Word-output is enabled for the organization
allowed_senderstext[]List of email addresses that are allowed to send CV's to the organizations inbox. Email addresses can be partial (e.g., @example.com)
atstextThe ATS this organization uses
avatartext | nullAvatar image representing the organization
default_prompttextDefault prompt used when filling in candidate data
delete_candidates_afterinteger | nullTime in days after which candidates are automatically deleted
detect_candidate_language_from_attachmentbooleanAutomatically detect candidate language when first attachment is uploaded.
enable_beta_integrationsbooleanexternal_variablesArray<LayoutVariable>Schema for data imported from external integration
ftstsvectormember_variablesArray<MemberVariable>Metafields defined on each member. Usable in layouts
modeltextLLM model to use
nametextName of the organization
proposal_byProposalAuthorAuthor shown on weblink proposals
proposal_reactionsArray<ProposalReaction>Allowed reactions on proposals
require_mfabooleanWhether MFA is required for members to access this organization
slugtextUnique string. Organization has a candidate email inbox at {{slug}}@candidates.cv-transformer.com
statusOrganizationStatusInternal status for the organization
typeOrganizationType | nullType of the organization
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"billing_account_id": "00000000-0000-0000-0000-000000000000",
"default_layout_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.437Z",
"updated_at": "2026-02-28T02:12:33.437Z",
"deleted_at": "2026-02-28T02:12:33.437Z",
"active_ats_integration": "Greenhouse",
"allow_inspection": true,
"allow_word_output": false,
"allowed_senders": [
""
],
"ats": "",
"avatar": "",
"default_prompt": "",
"delete_candidates_after": 90,
"detect_candidate_language_from_attachment": false,
"enable_beta_integrations": false,
"external_variables": [
{
"ai_instructions": "",
"sensitive": false,
"default": "",
"key": "name",
"max_length": null,
"min_length": 0,
"type": "inline-text"
},
{
"ai_instructions": "",
"sensitive": false,
"default": "",
"key": "description",
"max_length": null,
"min_length": 0,
"type": "text-block"
}
],
"member_variables": [
{
"ai_instructions": "",
"sensitive": false,
"default": "",
"key": "name",
"max_length": null,
"min_length": 0,
"type": "inline-text"
},
{
"ai_instructions": "",
"sensitive": false,
"default": "",
"key": "description",
"max_length": null,
"min_length": 0,
"type": "text-block"
}
],
"model": "mistral/codestral",
"name": "",
"proposal_by": "contact",
"proposal_reactions": [
{
"id": "invite",
"body": "",
"type": "email",
"subject": ""
},
{
"id": "comment",
"body": "",
"type": "email",
"subject": ""
},
{
"id": "reject",
"body": "",
"type": "email",
"subject": ""
}
],
"require_mfa": false,
"slug": "",
"status": "active",
"type": "regular"
}List organizations
Filters
idFilter<uuid>Unique identifier
billing_account_idFilter<uuid>Identifier of the billing account this organization belongs to
default_layout_idFilter<uuid | null>Identifier of the layout that is used for new candidates by default
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Deletion timestamp
active_ats_integrationFilter<IntegrationName | null>Currently active ATS integration
allow_inspectionFilter<boolean>Whether the CV-Transformer team is allowed to inspect the organization to debug errors
allow_word_outputFilter<boolean>Whether Word-output is enabled for the organization
allowed_sendersFilter<text[]>List of email addresses that are allowed to send CV's to the organizations inbox. Email addresses can be partial (e.g., @example.com)
atsFilter<text>The ATS this organization uses
avatarFilter<text | null>Avatar image representing the organization
default_promptFilter<text>Default prompt used when filling in candidate data
delete_candidates_afterFilter<integer | null>Time in days after which candidates are automatically deleted
detect_candidate_language_from_attachmentFilter<boolean>Automatically detect candidate language when first attachment is uploaded.
enable_beta_integrationsFilter<boolean>external_variablesFilter<Array<LayoutVariable>>Schema for data imported from external integration
ftsFilter<tsvector>member_variablesFilter<Array<MemberVariable>>Metafields defined on each member. Usable in layouts
modelFilter<text>LLM model to use
nameFilter<text>Name of the organization
proposal_byFilter<ProposalAuthor>Author shown on weblink proposals
proposal_reactionsFilter<Array<ProposalReaction>>Allowed reactions on proposals
require_mfaFilter<boolean>Whether MFA is required for members to access this organization
slugFilter<text>Unique string. Organization has a candidate email inbox at {{slug}}@candidates.cv-transformer.com
statusFilter<OrganizationStatus>Internal status for the organization
typeFilter<OrganizationType | null>Type of the organization
Responses
200A list of organizations with the selected columns
206Partial Content
GET /organizationscurl -X GET "https://api.cv-transformer.com/v1/organizations?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Update organizations
Filters
idFilter<uuid>Unique identifier
billing_account_idFilter<uuid>Identifier of the billing account this organization belongs to
default_layout_idFilter<uuid | null>Identifier of the layout that is used for new candidates by default
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Deletion timestamp
active_ats_integrationFilter<IntegrationName | null>Currently active ATS integration
allow_inspectionFilter<boolean>Whether the CV-Transformer team is allowed to inspect the organization to debug errors
allow_word_outputFilter<boolean>Whether Word-output is enabled for the organization
allowed_sendersFilter<text[]>List of email addresses that are allowed to send CV's to the organizations inbox. Email addresses can be partial (e.g., @example.com)
atsFilter<text>The ATS this organization uses
avatarFilter<text | null>Avatar image representing the organization
default_promptFilter<text>Default prompt used when filling in candidate data
delete_candidates_afterFilter<integer | null>Time in days after which candidates are automatically deleted
detect_candidate_language_from_attachmentFilter<boolean>Automatically detect candidate language when first attachment is uploaded.
enable_beta_integrationsFilter<boolean>external_variablesFilter<Array<LayoutVariable>>Schema for data imported from external integration
ftsFilter<tsvector>member_variablesFilter<Array<MemberVariable>>Metafields defined on each member. Usable in layouts
modelFilter<text>LLM model to use
nameFilter<text>Name of the organization
proposal_byFilter<ProposalAuthor>Author shown on weblink proposals
proposal_reactionsFilter<Array<ProposalReaction>>Allowed reactions on proposals
require_mfaFilter<boolean>Whether MFA is required for members to access this organization
slugFilter<text>Unique string. Organization has a candidate email inbox at {{slug}}@candidates.cv-transformer.com
statusFilter<OrganizationStatus>Internal status for the organization
typeFilter<OrganizationType | null>Type of the organization
Body
Partial<Organization>Responses
204The updated organizations with the selected columns
PATCH /organizationscurl -X PATCH "https://api.cv-transformer.com/v1/organizations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'User profiles
The user profile object
Attributes
user_iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
avatartext | nullAvatar image url
emailtextEmail address
ftstsvectorinvited_attimestamp with time zone | nullLast invite timestamp
languageLanguageUser language
last_login_attimestamp with time zone | nullLast login timestamp
nametextUser name
phonetextUser phone number
sourcetext | nullUser source
JSON
{
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.437Z",
"updated_at": "2026-02-28T02:12:33.437Z",
"avatar": "",
"email": "",
"invited_at": "2026-02-28T02:12:33.437Z",
"language": "en",
"last_login_at": "2026-02-28T02:12:33.437Z",
"name": "",
"phone": "",
"source": ""
}List user profiles
Filters
user_idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
avatarFilter<text | null>Avatar image url
emailFilter<text>Email address
ftsFilter<tsvector>invited_atFilter<timestamp with time zone | null>Last invite timestamp
languageFilter<Language>User language
last_login_atFilter<timestamp with time zone | null>Last login timestamp
nameFilter<text>User name
phoneFilter<text>User phone number
sourceFilter<text | null>User source
Responses
200A list of user profiles with the selected columns
206Partial Content
GET /user_profilescurl -X GET "https://api.cv-transformer.com/v1/user_profiles?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Webhook notifications
Tracks notifications sent via webhooks for various events
The webhook notification object
Attributes
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
created_ondateDate on which the notification was created
event_typeWebhookEventEvent this notification is for
payloadjsonbJSON payload that is sent along with this notification
responsetext | nullStored response
statusWebhookNotificationStatusNotification status
triesintegerAmount of times this webhook notification has been tried to be delivered
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"webhook_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.438Z",
"updated_at": "2026-02-28T02:12:33.438Z",
"created_on": null,
"event_type": "candidates.created",
"payload": {},
"response": "",
"status": "sent",
"tries": 0
}List webhook notifications
Filters
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
created_onFilter<date>Date on which the notification was created
event_typeFilter<WebhookEvent>Event this notification is for
payloadFilter<jsonb>JSON payload that is sent along with this notification
responseFilter<text | null>Stored response
statusFilter<WebhookNotificationStatus>Notification status
triesFilter<integer>Amount of times this webhook notification has been tried to be delivered
Responses
200A list of webhook notifications with the selected columns
206Partial Content
GET /webhook_notificationscurl -X GET "https://api.cv-transformer.com/v1/webhook_notifications?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Webhooks
Webhook event destinations
The webhook object
Attributes
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
descriptiontextAn optional description of the webhook
endpointtextURL to which notifications should be sent
eventsArray<WebhookEvent>Events to which the webhook is subscribed
signing_secrettextString used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications
sourcetextFrom where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-02-28T02:12:33.439Z",
"updated_at": "2026-02-28T02:12:33.439Z",
"description": "",
"endpoint": "",
"events": [
"candidates.created",
"members.updated"
],
"signing_secret": "md5((random())::text)",
"source": ""
}List webhooks
Filters
idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this webhook is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<text>An optional description of the webhook
endpointFilter<text>URL to which notifications should be sent
eventsFilter<Array<WebhookEvent>>Events to which the webhook is subscribed
signing_secretFilter<text>String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications
sourceFilter<text>From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier
Responses
200A list of webhooks with the selected columns
206Partial Content
GET /webhookscurl -X GET "https://api.cv-transformer.com/v1/webhooks?select=*" \
-H "Authorization: Bearer YOUR_API_KEY"Create webhooks
Body
Partial<Webhook> | Array<Partial<Webhook>>Responses
201The newly created webhooks with the selected columns
POST /webhookscurl -X POST "https://api.cv-transformer.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '[]'Delete webhooks
Filters
idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this webhook is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<text>An optional description of the webhook
endpointFilter<text>URL to which notifications should be sent
eventsFilter<Array<WebhookEvent>>Events to which the webhook is subscribed
signing_secretFilter<text>String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications
sourceFilter<text>From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier
Responses
204The deleted webhooks with the selected columns
DELETE /webhookscurl -X DELETE "https://api.cv-transformer.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"Update webhooks
Filters
idFilter<uuid>Unique identifier
organization_idFilter<uuid>Identifier of the organization this webhook is defined in
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
descriptionFilter<text>An optional description of the webhook
endpointFilter<text>URL to which notifications should be sent
eventsFilter<Array<WebhookEvent>>Events to which the webhook is subscribed
signing_secretFilter<text>String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications
sourceFilter<text>From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier
Body
Partial<Webhook>Responses
204The updated webhooks with the selected columns
PATCH /webhookscurl -X PATCH "https://api.cv-transformer.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{}'