Introduction
Authentication
Selecting data
Filtering
Sorting & pagination

Core resources

Candidate views
Candidates
Credit mutations
Layouts
Members
Organizations
Webhook notifications
Webhooks

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 v11.1 .

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.

Example
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 .

Selecting all columns
curl -X GET "https://api.cv-transformer.com/v1/layouts?select=*" \
  -H "Authorization: Bearer YOUR_API_KEY"
Selecting specific columns
curl -X GET "https://api.cv-transformer.com/v1/layouts?select=id,name" \
  -H "Authorization: Bearer YOUR_API_KEY"
Including data from related tables
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 .

Listing active candidates
curl -X GET "https://api.cv-transformer.com/v1/candidates?status=eq.active" \
  -H "Authorization: Bearer YOUR_API_KEY"
Filtering by multiple columns
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"
Deleting test candidates
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 .

Sorting by creation date
curl -X GET "https://api.cv-transformer.com/v1/layouts?order=created_at.desc" \
  -H "Authorization: Bearer YOUR_API_KEY"
Limiting the number of results
curl -X GET "https://api.cv-transformer.com/v1/layouts?limit=10&offset=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Candidate views

Logs for each time a candidate is viewed

The candidate view object

Attributes

idbigint

Unique identifier

candidate_iduuid
candidates.id

Identifier of the related candidate

created_attimestamp with time zone

Creation timestamp

anonymousboolean

Whether the candidate was viewed with personal information redacted or not

The candidate view object

JSON

{
  "id": 0,
  "candidate_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.058Z",
  "anonymous": false
}

List candidate views

Filters

idFilter<bigint>

Unique identifier

candidate_idFilter<uuid>
candidates.id

Identifier of the related candidate

created_atFilter<timestamp with time zone>

Creation timestamp

anonymousFilter<boolean>

Whether the candidate was viewed with personal information redacted or not

Responses

200

A list of candidate views with the selected columns

206

Partial Content

GET /candidate_views
curl -X GET "https://api.cv-transformer.com/v1/candidate_views?select=*" \
  -H "Authorization: Bearer YOUR_API_KEY"

The candidate object

Attributes

iduuid

Unique identifier

creator_iduuid | null
user_profiles.user_id

Identifier of the user that created this candidate

layout_iduuid | null
layouts.id

Identifier of the related layout

organization_iduuid
organizations.id

Identifier of the related organization

created_attimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

cvCandidateAttachment | null

CV attached to this candidate

ftstsvector
languageLanguage

Language this candidate should be displayed in

secrettext

Secret string. Used to privately share a proposal for this candidate with personal information non-redacted

secret_anonymoustext

Secret string. Used to privately share a proposal for this candidate with personal information redacted

statustext

Status of the candidate. Only active candidates can be shared

vacancyCandidateAttachment | null

Vacancy attached to this candidate

valuesCandidateValues

Values for the each of the variables defined in the layout the candidate uses

The candidate object

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "creator_id": "00000000-0000-0000-0000-000000000000",
  "layout_id": "00000000-0000-0000-0000-000000000000",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.086Z",
  "updated_at": "2025-02-28T20:27:48.086Z",
  "cv": {
    "text": "Text from the attachment",
    "type": "pdf",
    "url": "https://example.com/document.pdf"
  },
  "language": "en",
  "secret": "gen_random_uuid()",
  "secret_anonymous": "gen_random_uuid()",
  "status": "pending",
  "vacancy": {
    "text": "Text from the attachment",
    "type": "pdf",
    "url": "https://example.com/document.pdf"
  },
  "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

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created this candidate

layout_idFilter<uuid | null>
layouts.id

Identifier of the related layout

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

cvFilter<CandidateAttachment | null>

CV attached to this candidate

ftsFilter<tsvector>
languageFilter<Language>

Language this candidate should be displayed in

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

statusFilter<text>

Status of the candidate. Only active candidates can be shared

vacancyFilter<CandidateAttachment | null>

Vacancy attached to this candidate

valuesFilter<CandidateValues>

Values for the each of the variables defined in the layout the candidate uses

Responses

200

A list of candidates with the selected columns

206

Partial Content

GET /candidates
curl -X GET "https://api.cv-transformer.com/v1/candidates?select=*" \
  -H "Authorization: Bearer YOUR_API_KEY"

Delete candidates

Filters

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created this candidate

layout_idFilter<uuid | null>
layouts.id

Identifier of the related layout

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

cvFilter<CandidateAttachment | null>

CV attached to this candidate

ftsFilter<tsvector>
languageFilter<Language>

Language this candidate should be displayed in

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

statusFilter<text>

Status of the candidate. Only active candidates can be shared

vacancyFilter<CandidateAttachment | null>

Vacancy attached to this candidate

valuesFilter<CandidateValues>

Values for the each of the variables defined in the layout the candidate uses

Responses

204

The deleted candidates with the selected columns

DELETE /candidates
curl -X DELETE "https://api.cv-transformer.com/v1/candidates" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update candidates

Filters

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created this candidate

layout_idFilter<uuid | null>
layouts.id

Identifier of the related layout

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

cvFilter<CandidateAttachment | null>

CV attached to this candidate

ftsFilter<tsvector>
languageFilter<Language>

Language this candidate should be displayed in

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

statusFilter<text>

Status of the candidate. Only active candidates can be shared

vacancyFilter<CandidateAttachment | null>

Vacancy attached to this candidate

valuesFilter<CandidateValues>

Values for the each of the variables defined in the layout the candidate uses

Body

Partial<Candidate>

Responses

204

The updated candidates with the selected columns

PATCH /candidates
curl -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>

Responses

200

The created candidate

POST /candidates
curl -X POST "https://api.cv-transformer.com/v1/candidates" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "cv": {
      "text": "",
      "type": "link",
      "url": "https://example.com/cv"
    },
    "layout_id": "00000000-0000-0000-0000-000000000000",
    "vacancy": {
      "text": "",
      "type": "link",
      "url": "https://example.com/vacancy"
    },
    "values": {
      "key": "value"
    }
  }'

Upload candidate attachment

Upload an attachment for a candidate.

Query parameters

location"cv" | "vacancy"

The type of attachment to upload. Either a CV or a vacancy. Defaults to CV.

Body

The file to attach. Supported file-types: .pdf, .doc, .docx, .jpeg, .png, .webp

Responses

200

The updated candidate

POST /candidates/[candidate_id]/attach
curl -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_idrequireduuid

The identifier of the candidate to fill.

Query parameters

promptstring

Custom prompt, e.g. "Expand introduction", "Sort skills by level". Organization's default prompt is used when left empty.

Responses

200

The updated candidate

POST /candidates/[candidate_id]/fill
curl -X POST "https://api.cv-transformer.com/v1/candidates/[candidate_id]/fill?style=" \
  -H "Authorization: Bearer YOUR_API_KEY"

Credit mutations

Changes in credit per organization

The credit mutation object

Attributes

iduuid

Unique identifier

organization_iduuid
organizations.id

Identifier of the organization related to this mutation

created_attimestamp with time zone

Creation timestamp

deltainteger

Difference between next and previous credit

The credit mutation object

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.278Z",
  "delta": 0
}

List credit mutations

Filters

idFilter<uuid>

Unique identifier

organization_idFilter<uuid>
organizations.id

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

200

A list of credit mutations with the selected columns

206

Partial Content

GET /credit_mutations
curl -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

iduuid

Unique identifier

creator_iduuid | null
user_profiles.user_id

Identifier of the user that created this layout

organization_iduuid
organizations.id

Identifier of the related organization

parent_iduuid | null
layouts.id

Identifier of the layout this layout originates from

created_attimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

assetsArray<LayoutAsset>

Reusable assets used in the layout

default_valuesCandidateValues | null

Default values for each of the variables in the layout. When left empty, these values are auto-generated

featuredboolean

Whether the layout is featured in the layout library

ftstsvector
languagesArray<Language>

Languages the layout is translated in. First entry indicates the default language

nametext

Title of this layout

secretuuid

Secret string. Required to view the layout when its visibility is "private"

sectionsArray<LayoutSection>

List of sections the layout consists of

slugtext

Unique identifier that allows easy lookup in the layout library

thumbnailtext | null

Thumbnail image for this layout. Gets automatically generated

tokensArray<LayoutDesignToken>

List of design tokens used in the layout

variablesArray<LayoutVariable>

List of variables used in the layout. These variables can be filled in per candidate

visibility"public" | "private"

Visibility of this layout. "public" means the layout is published to the layout library.

The layout object

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": "2025-02-28T20:27:48.318Z",
  "updated_at": "2025-02-28T20:27:48.318Z",
  "assets": [
    {
      "type": "font",
      "family": "Roboto",
      "url": "https://example.com/roboto.ttf"
    },
    {
      "type": "image",
      "label": "Example",
      "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"
      }
    ]
  },
  "featured": false,
  "languages": [
    "en",
    "de",
    "fr",
    "nl"
  ],
  "name": "",
  "secret": "00000000-0000-0000-0000-000000000000",
  "sections": [
    {
      "body": {
        "align": "left",
        "background": "#FFFFFF",
        "bold": false,
        "border": null,
        "borderRadius": "0",
        "color": "#000000",
        "font": {
          "family": "Roboto",
          "letter_spacing": null,
          "line_height": null,
          "size": 16
        },
        "grow": true,
        "id": "text",
        "italic": false,
        "padding": 16,
        "split": false,
        "strikethrough": false,
        "transform": "none",
        "value": {
          "default": "Hello",
          "nl": "Hallo"
        },
        "visibility": true,
        "type": "text"
      },
      "footer": null,
      "header": null,
      "id": "section",
      "label": "Section",
      "type": "multi-page"
    }
  ],
  "slug": "",
  "thumbnail": "",
  "tokens": [
    {
      "id": "primary-color",
      "name": "Primary color",
      "type": "color",
      "value": "#000000"
    },
    {
      "id": "font-size",
      "name": "Font size",
      "type": "length",
      "value": 16
    }
  ],
  "variables": [
    {
      "key": "name",
      "sensitive": false,
      "type": "inline-text"
    },
    {
      "key": "description",
      "sensitive": false,
      "type": "text-block"
    }
  ],
  "visibility": "private"
}

List layouts

Filters

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created this layout

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

parent_idFilter<uuid | null>
layouts.id

Identifier of the layout this layout originates from

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<CandidateValues | null>

Default values for each of the variables in the layout. When left empty, these values are auto-generated

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

slugFilter<text>

Unique identifier that allows easy lookup in the layout library

thumbnailFilter<text | null>

Thumbnail image for this layout. Gets automatically generated

tokensFilter<Array<LayoutDesignToken>>

List of design tokens used in the layout

variablesFilter<Array<LayoutVariable>>

List of variables used in the layout. These variables can be filled in per candidate

visibilityFilter<"public" | "private">

Visibility of this layout. "public" means the layout is published to the layout library.

Responses

200

A list of layouts with the selected columns

206

Partial Content

GET /layouts
curl -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

201

The newly created layouts with the selected columns

POST /layouts
curl -X POST "https://api.cv-transformer.com/v1/layouts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '[]'

Delete layouts

Filters

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created this layout

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

parent_idFilter<uuid | null>
layouts.id

Identifier of the layout this layout originates from

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<CandidateValues | null>

Default values for each of the variables in the layout. When left empty, these values are auto-generated

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

slugFilter<text>

Unique identifier that allows easy lookup in the layout library

thumbnailFilter<text | null>

Thumbnail image for this layout. Gets automatically generated

tokensFilter<Array<LayoutDesignToken>>

List of design tokens used in the layout

variablesFilter<Array<LayoutVariable>>

List of variables used in the layout. These variables can be filled in per candidate

visibilityFilter<"public" | "private">

Visibility of this layout. "public" means the layout is published to the layout library.

Responses

204

The deleted layouts with the selected columns

DELETE /layouts
curl -X DELETE "https://api.cv-transformer.com/v1/layouts" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update layouts

Filters

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created this layout

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

parent_idFilter<uuid | null>
layouts.id

Identifier of the layout this layout originates from

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<CandidateValues | null>

Default values for each of the variables in the layout. When left empty, these values are auto-generated

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

slugFilter<text>

Unique identifier that allows easy lookup in the layout library

thumbnailFilter<text | null>

Thumbnail image for this layout. Gets automatically generated

tokensFilter<Array<LayoutDesignToken>>

List of design tokens used in the layout

variablesFilter<Array<LayoutVariable>>

List of variables used in the layout. These variables can be filled in per candidate

visibilityFilter<"public" | "private">

Visibility of this layout. "public" means the layout is published to the layout library.

Body

Partial<Layout>

Responses

204

The updated layouts with the selected columns

PATCH /layouts
curl -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

iduuid

Unique identifier

organization_iduuid
organizations.id

Identifier of the related organization

user_iduuid
user_profiles.user_id

Identifier of the related user

created_attimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

role"user" | "admin" | "superuser"

Role of the member

The member object

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "user_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.441Z",
  "updated_at": "2025-02-28T20:27:48.441Z",
  "role": "superuser"
}

List members

Filters

idFilter<uuid>

Unique identifier

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

user_idFilter<uuid>
user_profiles.user_id

Identifier of the related user

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

roleFilter<"user" | "admin" | "superuser">

Role of the member

Responses

200

A list of members with the selected columns

206

Partial Content

GET /members
curl -X GET "https://api.cv-transformer.com/v1/members?select=*" \
  -H "Authorization: Bearer YOUR_API_KEY"

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

emailrequiredstring

The email address of the member to invite.

namestring

The name of the member to invite.

languageLanguage

The language of the member to invite.

Responses

201

The invited member with it's user profile

POST /members
curl -X POST "https://api.cv-transformer.com/v1/members" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "email": "johndoe@example.com",
    "name": "John Doe"
  }'
Example response

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "user_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.497Z",
  "updated_at": "2025-02-28T20:27:48.497Z",
  "role": "superuser",
  "user_profile": {
    "user_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "2025-02-28T20:27:48.497Z",
    "updated_at": "2025-02-28T20:27:48.497Z",
    "avatar": "",
    "email": "",
    "language": "nl",
    "last_login_at": "2025-02-28T20:27:48.497Z",
    "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

idrequireduuid

The identifier of the member to revoke.

Responses

200

The deleted member

DELETE /members
curl -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

iduuid

Unique identifier

default_layout_iduuid | null
layouts.id

Identifier of the layout that is used for new candidates by default

created_attimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

deleted_attimestamp with time zone | null

Deletion timestamp

activeboolean | null
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)

avatartext | null

Avatar image representing the organization

creditinteger

Amount of credit currently available

delete_candidates_afterinteger | null

Time in days after which candidates are automatically deleted

ftstsvector
nametext

Name of the organization

slugtext

Unique string. Used to determine the organization's email inbox address

type"test" | "regular" | null

Type of the organization

The organization object

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "default_layout_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.518Z",
  "updated_at": "2025-02-28T20:27:48.518Z",
  "deleted_at": "2025-02-28T20:27:48.518Z",
  "active": false,
  "allowed_senders": [
    ""
  ],
  "avatar": "",
  "credit": 10,
  "delete_candidates_after": 0,
  "name": "",
  "slug": "",
  "type": "regular"
}

List organizations

Filters

idFilter<uuid>

Unique identifier

default_layout_idFilter<uuid | null>
layouts.id

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

activeFilter<boolean | null>
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)

avatarFilter<text | null>

Avatar image representing the organization

creditFilter<integer>

Amount of credit currently available

delete_candidates_afterFilter<integer | null>

Time in days after which candidates are automatically deleted

ftsFilter<tsvector>
nameFilter<text>

Name of the organization

slugFilter<text>

Unique string. Used to determine the organization's email inbox address

typeFilter<"test" | "regular" | null>

Type of the organization

Responses

200

A list of organizations with the selected columns

206

Partial Content

GET /organizations
curl -X GET "https://api.cv-transformer.com/v1/organizations?select=*" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update organizations

Filters

idFilter<uuid>

Unique identifier

default_layout_idFilter<uuid | null>
layouts.id

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

activeFilter<boolean | null>
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)

avatarFilter<text | null>

Avatar image representing the organization

creditFilter<integer>

Amount of credit currently available

delete_candidates_afterFilter<integer | null>

Time in days after which candidates are automatically deleted

ftsFilter<tsvector>
nameFilter<text>

Name of the organization

slugFilter<text>

Unique string. Used to determine the organization's email inbox address

typeFilter<"test" | "regular" | null>

Type of the organization

Body

Partial<Organization>

Responses

204

The updated organizations with the selected columns

PATCH /organizations
curl -X PATCH "https://api.cv-transformer.com/v1/organizations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{}'

Webhook notifications

Tracks notifications sent via webhooks for various events

The webhook notification object

Attributes

iduuid

Unique identifier

webhook_iduuid
webhooks.id

Identifier of the webhook this notification is related to

created_attimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

event_typeWebhookEvent

Event this notification is for

payloadjsonb

JSON payload that is sent along with this notification

responsetext | null

Stored response

status"pending" | "sent" | "error"

Notification status

triesinteger

Amount of times this webhook notification has been tried to be delivered

The webhook notification object

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "webhook_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.576Z",
  "updated_at": "2025-02-28T20:27:48.576Z",
  "event_type": "candidates.created",
  "payload": {},
  "response": "",
  "status": "pending",
  "tries": 0
}

List webhook notifications

Filters

idFilter<uuid>

Unique identifier

webhook_idFilter<uuid>
webhooks.id

Identifier of the webhook this notification is related to

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

Responses

200

A list of webhook notifications with the selected columns

206

Partial Content

GET /webhook_notifications
curl -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

iduuid

Unique identifier

organization_iduuid
organizations.id

Identifier of the organization this webhook is defined in

created_attimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

descriptiontext

An optional description of the webhook

endpointtext

URL to which notifications should be sent

eventsArray<WebhookEvent>

Events to which the webhook is subscribed

signing_secrettext

String used to sign each notification send to the webhook. Used to verify the validity of the webhook notifications

sourcetext

From where the webhook is registered. Can be from the admin, via the API, or via an external tool such as Zapier

The webhook object

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2025-02-28T20:27:48.637Z",
  "updated_at": "2025-02-28T20:27:48.637Z",
  "description": "",
  "endpoint": "",
  "events": [
    "candidates.created",
    "members.updated"
  ],
  "signing_secret": "md5((random())::text)",
  "source": ""
}

List webhooks

Filters

idFilter<uuid>

Unique identifier

organization_idFilter<uuid>
organizations.id

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

200

A list of webhooks with the selected columns

206

Partial Content

GET /webhooks
curl -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

201

The newly created webhooks with the selected columns

POST /webhooks
curl -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>
organizations.id

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

204

The deleted webhooks with the selected columns

DELETE /webhooks
curl -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>
organizations.id

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

204

The updated webhooks with the selected columns

PATCH /webhooks
curl -X PATCH "https://api.cv-transformer.com/v1/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{}'