Core resources
Candidate viewsWith 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 v11.1 .
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"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"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"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"Logs for each time a candidate is viewed
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": "2025-10-25T18:10:48.984Z",
"anonymous": false
}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
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"All information related to individual candidates
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_datajsonb | nullftstsvectorlanguageLanguageLanguage this candidate should be displayed in
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.
status"pending" | "active"Status 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": "2025-10-25T18:10:48.996Z",
"updated_at": "2025-10-25T18:10:48.996Z",
"deleted_at": "2025-10-25T18:10:48.996Z",
"attachments": {
"CV": {
"section_id": null,
"text": "Text from the attachment",
"type": "pdf",
"url": "https://example.com/document.pdf"
}
},
"avatar": "",
"export_filename": "",
"external_data": {},
"language": "en",
"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)",
"status": "pending",
"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"
}
]
}
}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<jsonb | null>ftsFilter<tsvector>languageFilter<Language>Language this candidate should be displayed in
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.
statusFilter<"pending" | "active">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
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"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<jsonb | null>ftsFilter<tsvector>languageFilter<Language>Language this candidate should be displayed in
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.
statusFilter<"pending" | "active">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
204The deleted candidates with the selected columns
DELETE /candidatescurl -X DELETE "https://api.cv-transformer.com/v1/candidates" \
-H "Authorization: Bearer YOUR_API_KEY"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<jsonb | null>ftsFilter<tsvector>languageFilter<Language>Language this candidate should be displayed in
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.
statusFilter<"pending" | "active">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
Partial<Candidate>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 a new candidate. Uses one credit. When no credits are available in the organization, the candidate is created with status="pending" instead.
Partial<Candidate>200The created candidate
POST /candidatescurl -X POST "https://api.cv-transformer.com/v1/candidates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"attachments": {
"CV": {
"section_id": null,
"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 an attachment for a candidate.
locationstringThe type of attachment to upload. Defaults to cv.
The file to attach. Supported file-types: .pdf, .doc, .docx, .jpeg, .png, .txt, .webp
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 or adjust a candidate's values.
candidate_idrequireduuidThe identifier of the candidate to fill.
promptstringCustom prompt, e.g. "Expand introduction", "Sort skills by level". Organization's default prompt is used when left empty.
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 custom data from a candidate
candidate_idrequireduuidThe identifier of the candidate to extract data from.
The JSONSchema of the data to extract.
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#"
}'Changes in credit per organization
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
deltaintegerDifference between next and previous credit
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-25T18:10:48.997Z",
"delta": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
deltaFilter<integer>Difference between next and previous credit
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"Layout definitions that can be filled in per candidate
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
assetsArray<LayoutAsset>Reusable assets used in the layout
default_valuesJsonObject | nullDefault values for each of the variables in the layout. When left empty, these values are auto-generated
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
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
visibility"public" | "private"Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsjsonb | nullJSON
{
"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": "2025-10-25T18:10:48.998Z",
"updated_at": "2025-10-25T18:10:48.998Z",
"assets": [
{
"family": "Roboto",
"type": "font",
"url": "https://example.com/roboto.ttf"
},
{
"label": "Example",
"type": "image",
"url": "https://example.com/example.png"
}
],
"default_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"
}
]
},
"export_filename": "",
"featured": false,
"languages": [
"en",
"cs",
"de",
"en-GB",
"es",
"fr",
"nb-NO",
"nl",
"yue",
"zh"
],
"name": "",
"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": "private",
"web_settings": {}
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
assetsFilter<Array<LayoutAsset>>Reusable assets used in the layout
default_valuesFilter<JsonObject | null>Default values for each of the variables in the layout. When left empty, these values are auto-generated
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
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<"public" | "private">Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsFilter<jsonb | null>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"Partial<Layout> | Array<Partial<Layout>>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 '[]'idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
assetsFilter<Array<LayoutAsset>>Reusable assets used in the layout
default_valuesFilter<JsonObject | null>Default values for each of the variables in the layout. When left empty, these values are auto-generated
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
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<"public" | "private">Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsFilter<jsonb | null>204The deleted layouts with the selected columns
DELETE /layoutscurl -X DELETE "https://api.cv-transformer.com/v1/layouts" \
-H "Authorization: Bearer YOUR_API_KEY"idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
assetsFilter<Array<LayoutAsset>>Reusable assets used in the layout
default_valuesFilter<JsonObject | null>Default values for each of the variables in the layout. When left empty, these values are auto-generated
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
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<"public" | "private">Visibility of this layout. "public" means the layout is published to the layout library.
web_settingsFilter<jsonb | null>Partial<Layout>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 '{}'Links users to organizations via roles
iduuidUnique identifier
external_idjsonb | nullcreated_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
permissionstext[]valuesRecord<string, string>Values for each of the organization's member_variables, usable in layouts
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": "2025-10-25T18:10:49.007Z",
"updated_at": "2025-10-25T18:10:49.007Z",
"permissions": [
""
],
"values": {}
}idFilter<uuid>Unique identifier
external_idFilter<jsonb | null>created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
permissionsFilter<text[]>valuesFilter<Record<string, string>>Values for each of the organization's member_variables, usable in layouts
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"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.
emailrequiredstringThe email address of the member to invite.
namestringThe name of the member to invite.
languageLanguageThe language of the member to invite.
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": "2025-10-25T18:10:49.215Z",
"updated_at": "2025-10-25T18:10:49.215Z",
"permissions": [
""
],
"values": {},
"user_profile": {
"user_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2025-10-25T18:10:49.215Z",
"updated_at": "2025-10-25T18:10:49.215Z",
"avatar": "",
"email": "",
"invited_at": "2025-10-25T18:10:49.215Z",
"language": "nl",
"last_login_at": "2025-10-25T18:10:49.215Z",
"name": "",
"phone": "",
"source": ""
}
}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.
idrequireduuidThe identifier of the member to revoke.
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"All base information per organizations
iduuidUnique identifier
default_layout_iduuid | nullIdentifier of the layout that is used for new candidates by default
paddle_subscription_idtext | nullcreated_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
deleted_attimestamp with time zone | nullDeletion timestamp
active_ats_integrationtext | nullallow_inspectionbooleanWhether the CV-Transformer team is allowed to inspect the organization to debug errors
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
creditintegerAmount of credit currently available
currencycharacter varyingdefault_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_integrationsbooleanftstsvectormember_variablesArray<MemberVariable>Metafields defined on each member. Usable in layouts
minimum_guaranteeintegermodeltext | nullLLM model to use
nametextName of the organization
next_billed_attimestamp with time zone | nullprev_usageintegerNumber of credits used in previous 7 days
price_per_creditintegerpricing_versiontextThe organization's pricing version
proposal_bytextproposal_reactionsjsonbrecent_usageintegerNumber of credits used in the last 7 days
slugtextUnique string. Used to determine the organization's email inbox address
statustextInternal status for the organization
subscription_typetexttrial_expires_attimestamp with time zone | nulltype"test" | "regular" | nullType of the organization
JSON
{
"id": "00000000-0000-0000-0000-000000000000",
"default_layout_id": "00000000-0000-0000-0000-000000000000",
"paddle_subscription_id": "",
"created_at": "2025-10-25T18:10:49.008Z",
"updated_at": "2025-10-25T18:10:49.008Z",
"deleted_at": "2025-10-25T18:10:49.008Z",
"active_ats_integration": "",
"allow_inspection": true,
"allowed_senders": [
""
],
"ats": "",
"avatar": "",
"credit": 0,
"currency": null,
"default_prompt": "",
"delete_candidates_after": 0,
"detect_candidate_language_from_attachment": false,
"enable_beta_integrations": false,
"member_variables": {},
"minimum_guarantee": 0,
"model": "",
"name": "",
"next_billed_at": "2025-10-25T18:10:49.008Z",
"prev_usage": 0,
"price_per_credit": 150,
"pricing_version": "v2",
"proposal_by": "organization",
"proposal_reactions": {},
"recent_usage": 0,
"slug": "",
"status": "active",
"subscription_type": "trial",
"trial_expires_at": "2025-10-25T18:10:49.008Z",
"type": "regular"
}idFilter<uuid>Unique identifier
default_layout_idFilter<uuid | null>Identifier of the layout that is used for new candidates by default
paddle_subscription_idFilter<text | null>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<text | null>allow_inspectionFilter<boolean>Whether the CV-Transformer team is allowed to inspect the organization to debug errors
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
creditFilter<integer>Amount of credit currently available
currencyFilter<character varying>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>ftsFilter<tsvector>member_variablesFilter<Array<MemberVariable>>Metafields defined on each member. Usable in layouts
minimum_guaranteeFilter<integer>modelFilter<text | null>LLM model to use
nameFilter<text>Name of the organization
next_billed_atFilter<timestamp with time zone | null>prev_usageFilter<integer>Number of credits used in previous 7 days
price_per_creditFilter<integer>pricing_versionFilter<text>The organization's pricing version
proposal_byFilter<text>proposal_reactionsFilter<jsonb>recent_usageFilter<integer>Number of credits used in the last 7 days
slugFilter<text>Unique string. Used to determine the organization's email inbox address
statusFilter<text>Internal status for the organization
subscription_typeFilter<text>trial_expires_atFilter<timestamp with time zone | null>typeFilter<"test" | "regular" | null>Type of the organization
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"idFilter<uuid>Unique identifier
default_layout_idFilter<uuid | null>Identifier of the layout that is used for new candidates by default
paddle_subscription_idFilter<text | null>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<text | null>allow_inspectionFilter<boolean>Whether the CV-Transformer team is allowed to inspect the organization to debug errors
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
creditFilter<integer>Amount of credit currently available
currencyFilter<character varying>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>ftsFilter<tsvector>member_variablesFilter<Array<MemberVariable>>Metafields defined on each member. Usable in layouts
minimum_guaranteeFilter<integer>modelFilter<text | null>LLM model to use
nameFilter<text>Name of the organization
next_billed_atFilter<timestamp with time zone | null>prev_usageFilter<integer>Number of credits used in previous 7 days
price_per_creditFilter<integer>pricing_versionFilter<text>The organization's pricing version
proposal_byFilter<text>proposal_reactionsFilter<jsonb>recent_usageFilter<integer>Number of credits used in the last 7 days
slugFilter<text>Unique string. Used to determine the organization's email inbox address
statusFilter<text>Internal status for the organization
subscription_typeFilter<text>trial_expires_atFilter<timestamp with time zone | null>typeFilter<"test" | "regular" | null>Type of the organization
Partial<Organization>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 '{}'Tracks notifications sent via webhooks for various events
iduuidUnique identifier
created_attimestamp with time zoneCreation timestamp
updated_attimestamp with time zoneLast modification timestamp
event_typeWebhookEventEvent this notification is for
payloadjsonbJSON payload that is sent along with this notification
responsetext | nullStored response
status"pending" | "sent" | "error"Notification 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": "2025-10-25T18:10:49.009Z",
"updated_at": "2025-10-25T18:10:49.009Z",
"event_type": "candidates.created",
"payload": {},
"response": "",
"status": "pending",
"tries": 0
}idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
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<"pending" | "sent" | "error">Notification status
triesFilter<integer>Amount of times this webhook notification has been tried to be delivered
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"Webhook event destinations
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": "2025-10-25T18:10:49.014Z",
"updated_at": "2025-10-25T18:10:49.014Z",
"description": "",
"endpoint": "",
"events": [
"candidates.created",
"members.updated"
],
"signing_secret": "md5((random())::text)",
"source": ""
}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
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"Partial<Webhook> | Array<Partial<Webhook>>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 '[]'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
204The deleted webhooks with the selected columns
DELETE /webhookscurl -X DELETE "https://api.cv-transformer.com/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"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
Partial<Webhook>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 '{}'